package com.cf.controller;

import com.cf.bean.TbDificultadBean;
import com.cf.dao.impl.CategoriaDao;
import com.cf.dao.impl.TbEjercicioDaoImpl;
import com.cf.dao.impl.TbPalabraDao;
import com.cf.dao.impl.tmpEjercicioCFDaoImpl;
import com.cf.modelo.EjercicioBean;
import com.cf.modelo.TbCategoria;
import com.cf.modelo.TbPalabra;
import com.cf.modelo.TbSubcategoria;
import com.cf.modelo.TbTarea;
import com.cf.modelo.TmpEjerciciocf;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.AjaxBehaviorEvent;

/**
 *
 * @author ASMCDev
 */
@ManagedBean
@RequestScoped
public class beanEjercicioAdm implements Serializable {

    private static Integer idCatSeleccionada;
    private static Integer idSubCatSeleccionada;
    private static Integer idTareaSeleccionada;
    private TbCategoria act_cat = new TbCategoria();
    private TbSubcategoria act_scat = new TbSubcategoria();
    private TbTarea act_tarea = new TbTarea();
    private List<TbCategoria> lstCategoria;
    private List<TbSubcategoria> lstSubCategoria;
    private List<TbTarea> lstTarea;
    private List<EjercicioBean> lstEjercicioBean;
    private EjercicioBean ejebean;
    private TmpEjerciciocf selected;

    public TmpEjerciciocf getSelected() {
        return selected;
    }

    public void setSelected(TmpEjerciciocf selected) {
        this.selected = selected;
    }
    private List<TmpEjerciciocf> listtmpEjercicioCF;
    private List<TmpEjerciciocf> listtmp;
    private static int codigoEjercicioVisualizar;

    public void visualizar() {
    }

    public List<TmpEjerciciocf> getListtmp() {
        FacesContext fc = FacesContext.getCurrentInstance();
        Map<String, String> params = fc.getExternalContext().getRequestParameterMap();
        if (params.get("codEjerVisualizar") != null) {
            codigoEjercicioVisualizar = Integer.parseInt(params.get("codEjerVisualizar"));
            listtmp = tmpEjercicioCFDaoImpl.listTmpEjercicio(codigoEjercicioVisualizar);
        }
        return listtmp;
    }

    public void setListtmp(List<TmpEjerciciocf> listtmp) {
        this.listtmp = listtmp;
    }
    private String codigopar;
    private String descrippar;
    private TbPalabra selectPalabra;

    public TbPalabra getSelectPalabra() {
        return selectPalabra;
    }

    public void setSelectPalabra(TbPalabra selectPalabra) {
        this.selectPalabra = selectPalabra;
    }

    public String getCodigopar() {
        return codigopar;
    }

    public void setCodigopar(String codigopar) {
        this.codigopar = codigopar;
    }

    public String getDescrippar() {
        return descrippar;
    }

    public void setDescrippar(String descrippar) {
        this.descrippar = descrippar;
    }

    public String envioParametro() {
        FacesContext fc = FacesContext.getCurrentInstance();
        Map<String, String> params = fc.getExternalContext().getRequestParameterMap();
        codigopar = params.get("codigopar");
        descrippar = params.get("descrippar");
        return "wFrmEjercicioCFActualizar";
    }
    private int id = 0;

    public List<TmpEjerciciocf> getListtmpEjercicioCF() {
        if (codigopar == null) {
            id = 0;
        } else {
            id = Integer.parseInt(codigopar);
        }

        listtmpEjercicioCF = tmpEjercicioCFDaoImpl.listTmpEjercicio(id);
        return listtmpEjercicioCF;
    }

    public void setListtmpEjercicioCF(List<TmpEjerciciocf> listtmpEjercicioCF) {
        this.listtmpEjercicioCF = listtmpEjercicioCF;
    }

    public EjercicioBean getEjebean() {
        return ejebean;
    }

    public void setEjebean(EjercicioBean ejebean) {
        this.ejebean = ejebean;
    }
    public static String descripcion;

    public beanEjercicioAdm() {

        lstEjercicioBean = new ArrayList<EjercicioBean>();
        ejebean = new EjercicioBean();
        listtmpEjercicioCF = new ArrayList<TmpEjerciciocf>();
        selectPalabra = new TbPalabra();
        listtmp = new ArrayList<TmpEjerciciocf>();
        selected = new TmpEjerciciocf();
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public List<EjercicioBean> getLstEjercicioBean() {
        if (descripcion != "") {

            lstEjercicioBean = TbEjercicioDaoImpl.listEjercicio(descripcion);
        }
        return lstEjercicioBean;
    }

    public void setLstEjercicioBean(List<EjercicioBean> lstEjercicioBean) {
        this.lstEjercicioBean = lstEjercicioBean;
    }

    public Integer getIdCatSeleccionada() {
        return idCatSeleccionada;
    }

    public void setIdCatSeleccionada(Integer idCatSeleccionada) {
        beanEjercicioAdm.idCatSeleccionada = idCatSeleccionada;
    }

    public Integer getIdSubCatSeleccionada() {
        return idSubCatSeleccionada;
    }

    public void setIdSubCatSeleccionada(Integer idSubCatSeleccionada) {
        beanEjercicioAdm.idSubCatSeleccionada = idSubCatSeleccionada;
    }

    public Integer getIdTareaSeleccionada() {
        return idTareaSeleccionada;
    }

    public void setIdTareaSeleccionada(Integer idTareaSeleccionada) {
        beanEjercicioAdm.idTareaSeleccionada = idTareaSeleccionada;
    }

    public List<TbSubcategoria> getLstSubCategoria() {
        act_cat.setCodigo(idCatSeleccionada);
        lstSubCategoria = CategoriaDao.listSubCategoria(act_cat);
        return lstSubCategoria;
    }

    public List<TbTarea> getLstTarea() {
        act_scat.setCodigo(idSubCatSeleccionada);
        lstTarea = CategoriaDao.listTareas(act_scat);
        return lstTarea;
    }

    public List<TbCategoria> getLstCategoria() {
        lstCategoria = CategoriaDao.listCategoria();
        return lstCategoria;
    }

    public void setCategoriaEvt(AjaxBehaviorEvent evt) {
        idSubCatSeleccionada = 0;
        idTareaSeleccionada = 0;
    }

    public void setSubCategoriaEvt(AjaxBehaviorEvent evt) {
        idTareaSeleccionada = 0;
        System.out.println("SubCategoria: " + idSubCatSeleccionada);
    }

    public String buscarevt() {
        System.out.println("Cat: " + idCatSeleccionada + " SubCat: " + idSubCatSeleccionada + " Tarea: " + idTareaSeleccionada);

        lstEjercicioBean = TbEjercicioDaoImpl.listEjercicio(descripcion);

        return "";
    }

    public void destroyWorld(ActionEvent actionEvent) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "System Error", "Please try again later.");
        FacesContext.getCurrentInstance().addMessage(null, message);
        this.eliminar();


    }

    public String eliminar() {
        FacesContext fc = FacesContext.getCurrentInstance();
        Map<String, String> params =
                fc.getExternalContext().getRequestParameterMap();
        int codID = Integer.parseInt(params.get("codId"));
        int codEjer = Integer.parseInt(params.get("codEjer"));

        TbPalabraDao palabradao = new TbPalabraDao();
        int resul = 0;

        resul = palabradao.eliminar2(codEjer);
        lstEjercicioBean = null;
        this.buscarevt();
        if (resul == 0) {
            System.out.println("error el eliminar");
        } else {
            System.out.println("Se elimino correctamente");
        }
        this.getLstEjercicioBean();
        return "wfrmEjercicioAdm";

    }
    List<EjercicioBean> listaModifica = new ArrayList<EjercicioBean>();
    EjercicioBean beanModificar = new EjercicioBean();

    public EjercicioBean getBeanModificar() {
        return beanModificar;
    }

    public void setBeanModificar(EjercicioBean beanModificar) {
        this.beanModificar = beanModificar;
    }

    public void listaModifica() {

        if (codigopar != null) {



            listaModifica = TbEjercicioDaoImpl.listEjercicioModificar(Integer.parseInt(codigopar));

            for (int i = 0; i < listaModifica.size(); i++) {


                beanModificar.setCodigo(listaModifica.get(i).getCodigo());
                beanModificar.setCodigoEjer(listaModifica.get(i).getCodigoEjer());
                beanModificar.setEnunciado(listaModifica.get(i).getEnunciado());
                beanModificar.setDescripcionEjer(listaModifica.get(i).getDescripcionEjer());
                beanModificar.setIdPlantilla(listaModifica.get(i).getIdPlantilla());
            }
        }


    }
    private TmpEjerciciocf tmpbean = new TmpEjerciciocf();

    public TmpEjerciciocf getTmpbean() {
        return tmpbean;
    }

    public void setTmpbean(TmpEjerciciocf tmpbean) {
        this.tmpbean = tmpbean;
    }
    public String codicion;

    public String showResult() {
        FacesContext fc = FacesContext.getCurrentInstance();
        Map<String, String> params =
                fc.getExternalContext().getRequestParameterMap();
        codicion = (params.get("condicion"));
        return "busquedaPalabras";
    }
    private TbDificultadBean s = new TbDificultadBean();

    public TbDificultadBean getS() {
        return s;
    }

    public void setS(TbDificultadBean s) {
        this.s = s;
    }
    private String mensaje;

    public String getMensaje() {
        return mensaje;
    }

    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }

    public void grabarDatos(ActionEvent actionEvent) {

        FacesMessage msg = null;
        TbEjercicioDaoImpl l = new TbEjercicioDaoImpl();
        if (l.grabarejercicio(beanModificar.getCodigo(), beanModificar.getCodigo(), 1, beanModificar.getIdPlantilla(), beanModificar.getDescripcionEjer(), beanModificar.getEnunciado(), s.getCodigo())) {
            mensaje = "Se grabó correctamente";
            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Mensaje: ", mensaje);
        } else {

            mensaje = "ERROR AL GRABAR";
            msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Mensaje: ", mensaje);
        }
        FacesContext.getCurrentInstance().addMessage(null, msg);

    }
}
